/*
 * @lc app=leetcode.cn id=1370 lang=typescript
 *
 * [1370] 上升下降字符串
 */

// @lc code=start
// 桶计数，但是规则应该是遍历上升和下降。。。
function sortString(s: string): string {
    const cache: number[] = new Array(26).fill(0);
    for (let i = 0; i < s.length; i++) {
        cache[s.charCodeAt(i) - 97] += 1;
    }
    let result: number[] = [];

    while (result.length < s.length) {
        for (let i = 0; i < cache.length; i++) {
            const element = cache[i];
            if (element) {
                result.push(i + 97);
                cache[i]--;
            }
        }
        for (let i = cache.length - 1; i >= 0; i--) {
            const element = cache[i];
            if (element) {
                result.push(i + 97);
                cache[i]--;
            }
        }
    }
    return String.fromCharCode(...result);
}
// @lc code=end
